package com.gylang.springmini.registry;

/**
 * 别名注册
 *
 * @author gylang
 * data 2021/11/13
 */
public interface AliasRegistry {


    /**
     * 注册一个别名
     *
     * @param name  bean的名称
     * @param alias 别名
     */
    void registerAlias(String name, String alias);

    /**
     * 删除一个别名
     *
     * @param alias 别名
     */
    void removeAlias(String alias);
    /**
     * 删除一个原名
     *
     * @param name 原名
     */
    void removeName(String name);

    /**
     * 判断是否为别名
     *
     * @param name 别名名称
     * @return 是否为别名
     */
    boolean isAlias(String name);

    /**
     * 获取所有别名
     *
     * @param name bean的名称
     * @return bean的所有别名
     */
    String[] getAliases(String name);

    /**
     * 获取bean的原名称 可以是原名/别名
     * @param name 输入的别名/原名
     * @return
     */
    public String canonicalName(String name);
}
